package com.jt.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.service.ItemService;
import com.jt.vo.EasyUITable;
import com.jt.vo.SysResult;

@RestController
@RequestMapping("/item")	// @Controller + @ResponseBody 将返回值转化为JSON数据.
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	/**
	 * url:http://localhost:8091/item/query?page=1&rows=50
	 *   参数:page 页数/rows行数
	 *   返回值结果: EasyUITable vo
	 */
	@RequestMapping("/query")
	public EasyUITable findItemByPage(Integer page,Integer rows) {
		
		return itemService.findItemByPage(page,rows);
	}
	
	/**
	 * url:/item/save
	 *   参数: 表单提交数据
	 *   返回值:Sysresult对象
	 * @return
	 * 
	 *  注意事项:如果采用多个参数接收页面数据.则需要注意不要出现重名属性.
	 *  name="itemId" 将会赋值给全部名称为itemId的属性
	 */
	@RequestMapping("/save")
	public SysResult saveItem(Item item,ItemDesc itemDesc) {
		
		itemService.saveItem(item,itemDesc);
		return SysResult.success();
		/*try {
			itemService.saveItem(item);
			return SysResult.success();
		} catch (Exception e) {
			e.printStackTrace();
			return SysResult.fail();
		}*/
	}
	
	
	/**
	 * 页面回显的调用流程
	 * 	1.当修改按钮点击时.开始执行工具栏中的操作.
	 *  2.动态的获取用户选中的数据,之后转化为字符串,中间使用","号进行分割.
	 *  3.之后根据ids判断是否没选,或者是否多选.
	 *  4.根据id选择器,选中窗口div进行弹出框操作.
	 *  5.当弹出框操作完成之后,div发起herf请求动态获取编辑页面信息. href:'/page/item-edit
	 *  6.当窗口弹出之后,开始动态的实现数据的回显功能.
	 *  7.同时发起ajax请求,动态的获取商品详情数据信息.
	 *  
	 *  url地址:http://localhost:8091/item/query/item/desc/1474392165
	 *  参数:1474392165
	 *  返回值结果: Sysresult对象
	 */
	
	@RequestMapping("/query/item/desc/{itemId}")
	public SysResult findItemDescById(@PathVariable Long itemId) {
		
		//1.根据id查询商品详情信息
		ItemDesc itemDesc = itemService.findItemDescById(itemId);
		//itemDesc中的itemDesc的属性是html代码片段
		return SysResult.success(itemDesc);
	}
	
	/**
	 * 实现商品信息的修改
	 * url:/item/update
	 * 参数:item数据和itemDesc数据
	 * 返回值:Sysresult对象
	 */
	@RequestMapping("/update")
	public SysResult updateItem(Item item,ItemDesc itemDesc) {
		
		itemService.updateItem(item,itemDesc);
		return SysResult.success();
	}
	
	/**
	 * 商品删除操作
	 * url:http://localhost:8091/item/delete
	 * 参数: ids=10001,10002
	 * 返回值: SysResult对象
	 * 
	 * SpringMVC关于数组操作方式,
	 */
	@RequestMapping("/delete")
	public SysResult deleteItem(Long... ids) {
	
		itemService.deleteItems(ids);
		return SysResult.success();
	}
	
	/**
	 * 完成商品上架/下架
	 * 业务需求:     
	 * url地址:  
	 * 		上架:/item/reshelf  上架 status=1
	 * 		下架:/item/instock  下架 status=2
	 * 参数: ids
	 * 返回值结果: SysResult对象
	 * 		
	 */
	@RequestMapping("reshelf")
	public SysResult reshelf(Long... ids) {
		
		int status = 1;
		itemService.updateStatus(ids,status);
		return SysResult.success();
	}
	
	@RequestMapping("instock")
	public SysResult instock(Long... ids) {
		
		int status = 2;
		itemService.updateStatus(ids,status);
		return SysResult.success();
	}
	
	
	
	
	
	
	
}
